SpringBoot 代码混淆真香,再也不用担心反编译代码泄露...

您所在的位置:网站首页 jar 混淆 SpringBoot 代码混淆真香,再也不用担心反编译代码泄露...

SpringBoot 代码混淆真香,再也不用担心反编译代码泄露...

#SpringBoot 代码混淆真香,再也不用担心反编译代码泄露...| 来源: 网络整理| 查看: 265

编译

简单就是把代码跑一哈,然后我们的代码 .java文件 就被编译成了 .class 文件

1a6bba980a15a2cd5038b3437a6654f5.png

反编译

就是针对编译生成的 jar/war 包 里面的 .class 文件 逆向还原回来,可以看到你的代码写的啥。

比较常用的反编译工具 JD-GUI ,直接把编译好的jar丢进去,大部分都能反编译看到源码:

8791098fee362ad4cfe4517049679d04.png

那如果不想给别人反编译看自己写的代码呢?

怎么做?

混淆

该篇玩的代码混淆 ,是其中一种手段。Java技术进阶路线:https://www.yoodb.com/

我给你看,但你反编译看到的不是真正的代码。

先看一张效果示例图 :

fe9c5298a99edd097ddc79050de5835f.png

开搞

正文

先看一下我们混淆一个项目代码,要做啥?

0342473f1f9a436fa023efe3fbfb67b5.png

第一步,在项目路径下,新增一份文件proguard.cfg:

proguard.cfg

#指定Java的版本 -target 1.8 #proguard会对代码进行优化压缩,他会删除从未使用的类或者类成员变量等 -dontshrink #是否关闭字节码级别的优化,如果不开启则设置如下配置 -dontoptimize #混淆时不生成大小写混合的类名,默认是可以大小写混合 -dontusemixedcaseclassnames # 对于类成员的命名的混淆采取唯一策略 -useuniqueclassmembernames #混淆时不生成大小写混合的类名,默认是可以大小写混合 -dontusemixedcaseclassnames #混淆类名之后,对使用Class.forName('className')之类的地方进行相应替代 -adaptclassstrings   #对异常、注解信息予以保留 -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod # 此选项将保存接口中的所有原始名称(不混淆)--> -keepnames interface ** { *; } # 此选项将保存所有软件包中的所有原始接口文件(不进行混淆) #-keep interface * extends * { *; } #保留参数名,因为控制器,或者Mybatis等接口的参数如果混淆会导致无法接受参数,xml文件找不到参数 -keepparameternames # 保留枚举成员及方法 -keepclassmembers enum * { *; } # 不混淆所有类,保存原始定义的注释- -keepclassmembers class * {                         @org.springframework.context.annotation.Bean *;                         @org.springframework.beans.factory.annotation.Autowired *;                         @org.springframework.beans.factory.annotation.Value *;                         @org.springframework.stereotype.Service *;                         @org.springframework.stereotype.Component *;                         }   #忽略warn消息 -ignorewarnings #忽略note消息 -dontnote #打印配置信息 -printconfiguration -keep public class com.example.myproguarddemo.MyproguarddemoApplication {         public static void main(java.lang.String[]);     }

注意点:

0d0a1fbbba82c3b1737d2dc4c7f2618f.png

其余的看注释,可以配置哪些类不参与混淆,哪些枚举保留,哪些方法名不混淆等等。

第二步,在pom文件上 加入proguard 混淆插件 :

build标签里面改动加入一下配置

                          com.github.wvengen             proguard-maven-plugin             2.6.0                                                                    package                                              proguard                                                                                                  ${project.build.finalName}.jar                                  ${project.build.finalName}.jar                                  true                                  ${project.basedir}/proguard.cfg                                                       ${java.home}/lib/rt.jar                     ${java.home}/lib/jce.jar                     ${java.home}/lib/jsse.jar                                                   !META-INF/**,!META-INF/versions/9/**.class                                  ${project.basedir}/target                                                                                                                    org.springframework.boot             spring-boot-maven-plugin                                                                            repackage                                                                   com.example.myproguarddemo.MyproguarddemoApplication                                                                 

注意点:

333708f939c73f8ca39bbd59effe98f4.png

41fc458bc7275d2b94afe0b12317e3b7.png

然后可以看到:

c7588b6fa2a592ccba513babe41dec63.png

然后点击package,正常执行编译打包流程就可以 :

6f0bd1731b404f9eaca1dcec5be1e097.png

然后可以看到jar的生成:

d25f08424c446b359d88b16a769103c3.png

看看效果:

febfb8b4085e6ef746f0b9f6b7e71b57.png

好了,该篇就到这。

作者:小目标青年

https://blog.csdn.net/qq_35387940

公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!

最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群!

Java精选面试题(微信小程序):3000+道面试题,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计等,在线随时刷题!

------ 特别推荐 ------

特别推荐:专注分享最前沿的技术与资讯,为弯道超车做好准备及各种开源项目与高效率软件的公众号,「大咖笔记」,专注挖掘好东西,非常值得大家关注。点击下方公众号卡片关注。

点击“阅读原文”,了解更多精彩内容!

文章有帮助的话,点在看,转发吧!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3